//import processing.core.*; 
//import processing.xml.*; 
//
//import noc.*; 
//import java.util.HashMap; 
//import processing.core.PApplet; 
//import processing.core.PFont; 
//import processing.core.PImage; 
//import java.util.ArrayList; 
//import java.util.HashMap; 
//import noc.Vector3D; 
//import processing.core.PApplet; 
//import processing.core.PImage; 
//import twitter4j.Trend; 
//import twitter4j.Trend; 
//import twitter4j.Twitter; 
//import twitter4j.TwitterException; 
//import java.util.HashMap; 
//import noc.Vector3D; 
//import processing.core.PApplet; 
//import processing.core.PImage; 
//import java.util.ArrayList; 
//import noc.Vector3D; 
//import processing.core.PApplet; 
//import java.util.List; 
//import java.util.Vector; 
//import noc.Vector3D; 
//import twitter4j.Query; 
//import twitter4j.QueryResult; 
//import twitter4j.Tweet; 
//import twitter4j.Twitter; 
//import twitter4j.TwitterException; 
//import java.util.HashMap; 
//import noc.Vector3D; 
//import processing.core.PApplet; 
//import processing.core.PImage; 
//
//import java.applet.*; 
//import java.awt.*; 
//import java.awt.image.*; 
//import java.awt.event.*; 
//import java.io.*; 
//import java.net.*; 
//import java.text.*; 
//import java.util.*; 
//import java.util.zip.*; 
//import java.util.regex.*; 
//
//public class Monera_ITupferl extends PApplet {
//
//
//
//
//
//
//
//	Util util;
//	HashMap hm;
//	Colony colony;
//
//	boolean isLoaded;
//	boolean background;
//
//	PFont font;
//	PImage bg;
//	PImage help;
//	PImage about;
//	PImage details;
//
//	Feeder fd;
//	ParadeTimerThread st;
//	PresenterThread presenter;
//
//	public void setup() {
//
//		size(1000, 600);
//		colorMode(RGB,255,255,255,100);
//
//		util = new Util();
//		hm = new HashMap();
//		colony = new Colony(hm);
//
//		// #####################
//		// THREADS
//		// #####################
//
//		fd = new Feeder(colony);
//		fd.start();
//
//		st = new ParadeTimerThread("ParadeTimer");
//		st.start();
//
//		presenter = new PresenterThread("PresenterThread", colony);
//		presenter.start();
//
//		// #####################
//		// DESIGN STUFF
//		// #####################
//
//		background = true;
//		font = createFont("comfortaa.ttf", 14);
//
//		bg = loadImage("background.png");
//		help = loadImage("menu-help.png");
//		about = loadImage("menu-about.png");
//		details = loadImage("menu-details.png");
//
//		//smooth();
//	}
//
//	public void draw() {
//		if(background){
//			image(bg, 0, 0);
//		} 
//		if(!util.isLoaded){
//			textFont(font,15);
//			text("Loading images...", 100, 100);
//			util.preloadImages(hm);			
//		}
//		fill(255,255,255);
//		strokeWeight(1);
//		line(800,0,800,600);
//		colony.loop();
//	}
//
//	public void mousePressed() {
//		//println(mouseX + " | " + mouseY);
//
//		if(mouseX < 800){
//			colony.menuSelection = "0";
//		}
//
//		if(colony.menuSelection.equals("1")){
//			colony.drawS[1] = !colony.drawS[1];
//		} 
//		else if(colony.menuSelection.equals("2")){
//			colony.drawS[2] = !colony.drawS[2];
//		} 
//		else if(colony.menuSelection.equals("3")){
//			colony.drawS[3] = !colony.drawS[3];
//		} 
//		else if(colony.menuSelection.equals("4")){
//			colony.drawS[4] = !colony.drawS[4];
//		} 
//		else if(colony.menuSelection.equals("5")){
//			colony.drawS[5] = !colony.drawS[5];
//		} 
//		else if(colony.menuSelection.equals("6")){
//			colony.drawS[6] = !colony.drawS[6];
//		} 
//		else if(colony.menuSelection.equals("7")){
//			colony.drawS[7] = !colony.drawS[7];
//		} 
//		else if(colony.menuSelection.equals("8")){
//			colony.drawS[8] = !colony.drawS[8];
//		} 
//		else if(colony.menuSelection.equals("9")){
//			colony.drawS[9] = !colony.drawS[9];
//		} 
//		else if(colony.menuSelection.equals("10")){
//			colony.drawS[10] = !colony.drawS[10];
//		}
//		else if(colony.menuSelection.equals("11")){
//			colony.drawS[11] = !colony.drawS[11];
//		}
//		else if(colony.menuSelection.equals("help")){
//			colony.drawHelp = !colony.drawHelp;
//			colony.drawDetails = false;
//			colony.drawAbout = false;
//		}
//		else if(colony.menuSelection.equals("about")){
//			colony.drawAbout = !colony.drawAbout;
//			colony.drawHelp = false;
//			colony.drawDetails = false;
//		}
//		else if(colony.menuSelection.equals("details")){
//			colony.drawDetails = !colony.drawDetails;
//			colony.drawHelp = false;
//			colony.drawAbout = false;
//		} 
//		else {
//			colony.drawDetails = false;
//			colony.drawHelp = false;
//			colony.drawAbout = false;
//		} 
//	}
//
//	public void mouseReleased(){
//		colony.menuSelection = "0";
//	}
//
//	public void keyPressed(){
//		if(key == 'a' || key == 'A'){
//			colony.setAction("separateGroups");
//		} 
//		else if (key == 's' || key == 'S'){
//			colony.setAction("stopAll");
//		} 
//		else if(key == 'e' || key == 'E'){
//			colony.setAction("follow");
//		} 
//		else if(key == 'd' || key == 'D'){
//			colony.setAction("wander");
//		} 
//		else if(key == 'w' || key == 'W'){
//			colony.setAction("goRound");
//		} 
//		else if(key == 'q' || key == 'Q'){
//			colony.setAction("paradeMode");
//		} 
//		else if(key == 'r' || key == 'R'){
//			background = !background;
//		} 
//		else if(key == 'f' || key == 'F'){
//			colony.setAction("killAll");
//		} 
//		else if(key == '1'){
//			colony.drawS[1] = !colony.drawS[1];
//		} 
//		else if(key == '2'){
//			colony.drawS[2] = !colony.drawS[2];
//		} 
//		else if(key == '3'){
//			colony.drawS[3] = !colony.drawS[3];
//		} 
//		else if(key == '4'){
//			colony.drawS[4] = !colony.drawS[4];
//		} 
//		else if(key == '5'){
//			colony.drawS[5] = !colony.drawS[5];
//		} 
//		else if(key == '6'){
//			colony.drawS[6] = !colony.drawS[6];
//		}
//		else if(key == '7'){
//			colony.drawS[7] = !colony.drawS[7];
//		}
//		else if(key == '8'){
//			colony.drawS[8] = !colony.drawS[8];
//		}
//		else if(key == '9'){
//			colony.drawS[9] = !colony.drawS[9];
//		}
//		else if(key == '0'){
//			colony.drawS[10] = !colony.drawS[10];
//		}
//	}
//
//
//
//
//
//
//
//
//
//
//
//	public class Colony {
//
//		private static final int FONT_SIZE = 15;
//		//public static final int TEXT_POINT_Y = 50;
//		//public static final int TEXT_POINT_X = 810;
//		//private static final int BACTERIAS_INITIAL_NUMBER = 70;
//		private static final int MAX_AGE = 1000;
//		private static final boolean DEATH_ENABLE = false;
//
//		private ArrayList organisms;
//		private HashMap hm;
//
//		private Organism mainBoid;
//		private Path path;
//
//		public String action = "";
//		public String menuSelection;
//
//		public boolean drawS[]; 
//		public boolean drawHelp = false;
//		public boolean drawAbout = false;  
//		public boolean drawDetails = false;
//
//		public int selectedOrganisms = 0;
//
//		private boolean didGoToInitialPoint = false;
//
//		private String[] topics;
//
//		public Colony(HashMap hashMap) {
//			drawS = new boolean[12];
//			drawS[1] = true;
//			drawS[2] = true;
//			drawS[3] = true;
//			drawS[4] = true;
//			drawS[5] = true;
//			drawS[6] = true;
//			drawS[7] = true;
//			drawS[8] = true;
//			drawS[9] = true;
//			drawS[10] = true;
//			drawS[11] = true;
//			menuSelection = "0";
//			hm = hashMap;
//			organisms = new ArrayList();
//			path = new Path();
//			path.pointsOnPath();
//		}
//
//		// public void addInitialBacterias() {
//		//    for (int i = 0; i < BACTERIAS_INITIAL_NUMBER; i++) {
//		//      organisms.add(new Organism(new Vector3D(random(width), random(height)),
//		//      3.0f, 0.1f, util.randomGroup(), floor(random(1.0f, 3.0f)), hm));
//		//    }
//		//  }
//
//		//  public synchronized Organism addBoid(Vector3D initialPosition) {
//		//    Organism b = new Organism(initialPosition, 3.0f, 0.1f, util.randomGroup(), PApplet.floor(random(1.0f, 4.0f)), hm);
//		//    organisms.add(b);
//		//    return b;
//		//  }
//
//		public synchronized Organism addBoid(Vector3D initialPosition, String group) {
//			Organism b = new Organism(initialPosition, 1.5f, 0.1f, group, floor(random(1.0f, 4.0f)), hm);
//			organisms.add(b);
//			return b;
//		}
//
//		public synchronized void loop() {
//			selectedOrganisms = 0;
//			//path.display();
//			//textFont(font, 10);
//
//			for (int i = 0; i < organisms.size(); i++) {
//				Organism b = (Organism)organisms.get(i);
//				if (b.age > MAX_AGE && DEATH_ENABLE) {
//					organisms.remove(i);
//				} 
//				else {
//					act(b);
//					if(b.group.equals("1")){
//						b.selected = true;
//					}
//					if(checkGroupRun(b.group)){
//						b.run();
//						selectedOrganisms = selectedOrganisms + 1;
//					}
//					mainBoid = b;
//				}
//			}
//
//			displayMenu();
//
//			if(organisms.size() > 400){
//				util.duplicateControl = new Vector();
//				organisms.clear();
//			}
//
//		}
//
//		private boolean checkGroupRun(String group){
//			boolean ret = true;
//			if(group.equals("1") && drawS[1]){
//				ret = true;
//			} 
//			else if(group.equals("2") && drawS[2]){
//				ret = true;
//			} 
//			else if(group.equals("3") && drawS[3]){
//				ret = true;
//			} 
//			else if(group.equals("4") && drawS[4]){
//				ret = true;
//			} 
//			else if(group.equals("5") && drawS[5]){
//				ret = true;
//			} 
//			else if(group.equals("6") && drawS[6]){
//				ret = true;
//			} 
//			else if(group.equals("7") && drawS[7]){
//				ret = true;
//			}
//			else if(group.equals("8") && drawS[8]){
//				ret = true;
//			}
//			else if(group.equals("9") && drawS[9]){
//				ret = true;
//			}
//			else if(group.equals("10") && drawS[10]){
//				ret = true;
//			}
//			else if(group.equals("11") && drawS[11]){
//				ret = true;
//			}
//			else {
//				ret = false;
//			}
//			return ret;
//		}
//
//		private Vector3D separateGroups(Organism b) {
//			String group = b.group;
//			Vector3D dest = new Vector3D(0, 0);
//			if (group.equals("1")) {
//				dest = new Vector3D(108, 97);
//			} 
//			else if (group.equals("2")) {
//				dest = new Vector3D(301, 83);
//			}
//			else if (group.equals("3")) {
//				dest = new Vector3D(472, 102);
//			} 
//			else if (group.equals("4")) {
//				dest = new Vector3D(718, 184);
//			} 
//			else if (group.equals("5")) {
//				dest = new Vector3D(665, 386);
//			} 
//			else if (group.equals("6")) {
//				dest = new Vector3D(498, 326);
//			} 
//			else if (group.equals("7")) {
//				dest = new Vector3D(316, 326);
//			} 
//			else if (group.equals("8")) {
//				dest = new Vector3D(139, 382);
//			}
//			else if (group.equals("9")) {
//				dest = new Vector3D(188, 559);
//			} 
//			else {
//				dest = new Vector3D(500, 556);
//			}
//			return dest;
//		}
//
//		private synchronized void act(Organism b) {
//			if (action.equals("separateGroups")) {
//				Vector3D dest = separateGroups(b);
//				b.seek(dest);
//			} 
//			else if (action.equals("stopAll")) {
//				b.stop();
//			} 
//			else if (action.equals("follow")) {
//				b.follow(mainBoid);
//			} 
//			else if (action.equals("goRound")) {
//				b.goRound(mainBoid);
//			} 
//			else if (action.equals("paradeMode")) {
//				paradeMode(b);
//			} 
//			else if(action.equals("killAll")) {
//				organisms.removeAll(organisms);
//				action = "wander";
//			} 
//			else if(action.equals("wander")) {
//				b.wander();
//			} 
//			else {
//				b.wander();
//			}
//			if(!action.equals("paradeMode")){
//				didGoToInitialPoint = false;
//				b.isLabelEnable = false;
//			}
//		}
//
//		private void paradeMode(Organism b){
//			b.acceleration.normalize();
//			b.velocity.normalize();
//			moveToInitParade();
//			stopPointParade(b);
//			printLabelForParade(b);
//			b.follow(path);
//			if(b.stopped){
//				if(st.blockade){
//					b.acceleration.limit(10);
//					b.acceleration.add(new Vector3D(100,0));
//					b.velocity.limit(100);
//					b.velocity.add(new Vector3D(100,0));
//					b.velocity.normalize();
//					b.acceleration.normalize();
//					b.stopped = false;	
//					st.blockade = false;
//				}
//			}
//		}
//
//		private void printLabelForParade(Organism b) {
//			float up = 60;
//			float down = 550;
//			float left = 300;
//			float right = 425;
//			if(b.location.x > left && b.location.x < right
//					&& b.location.y > up && b.location.y < down){
//				b.isLabelEnable = true;
//			} 
//			else {
//				b.isLabelEnable = false;
//			}
//		}
//
//		private void moveToInitParade() {
//			if(!didGoToInitialPoint){
//				for (int i = 0; i <organisms.size(); i++) {
//					Organism b = (Organism)organisms.get(i);
//					b.location.x = 50;
//					b.location.y = 50;
//				}
//				didGoToInitialPoint = true;
//			}
//		}
//
//		public void stopPointParade(Organism b){
//			float up = 15;
//			float down = 40;
//			float left = 200;
//			float right = 205;
//			if(b.location.x > left && b.location.x < right
//					&& b.location.y > up && b.location.y < down){
//				b.stop();
//			}
//		}
//
//		public void setAction(String action_) {
//			action = action_;
//		}
//
//		public void removeAllFromGroup(String group){
//			for (int i = 0; i < organisms.size(); i++) {
//				Organism org = (Organism)organisms.get(i);
//				if(org.group.equals(group)){
//					organisms.remove(i);
//				}
//			}
//		}
//
//		public void updateTopics(String[] topics_) {
//			topics = topics_;
//		}
//
//		public void displayMenu(){
//			int currentX = 10;
//			int currentY = 68;
//
//			PImage aux;
//
//			if(topics == null){
//				textFont(font,14);
//				text("acquiring information...", 800 + currentX, currentY);
//			} 
//			else {
//				textFont(font, 15);
//				text(selectedOrganisms + " organisms", 800 + currentX + 15, currentY - 10);
//				for(int i = 1; i <= 11; i++){
//					String trendTitle = topics[i-1].split("OR")[0].trim();
//					aux = (PImage)hm.get("ic" + i);
//					pushMatrix();
//					translate(800 + currentX,currentY);
//					image(aux, 0, 0);
//					if(menuCollision(800 + currentX,currentY,200,40)){
//						menuSelection = i + "";
//					}
//					fill(255);
//					textFont(font,14);
//					text(trendTitle, 40, 20);
//					if(!drawS[i]){
//						strokeWeight(1);
//						stroke(255);
//						int c = color(200, 0, 0, 70);
//						fill(c);
//						rect(-10,-5, 200, 40);
//					}
//					if(i == 1){
//						strokeWeight(2);
//						line(4,36,180,36);
//					}
//					popMatrix();       
//					currentY = currentY + 40;
//				}
//
//				if(menuCollision(934,503,56,26)){
//					menuSelection = "help";
//				} 
//				else if(menuCollision(917,534,74,24)){
//					menuSelection = "about";
//				} 
//				else if(menuCollision(911,562,78,29)){
//					menuSelection = "details";
//				}
//
//				if(drawHelp){
//					image(help, 26,21);
//				} 
//				else if (drawAbout){
//					image(about, 26,21);
//				} 
//				else if (drawDetails){
//					image(details, 26,21);
//				}
//
//			}
//
//		}
//
//		private boolean menuCollision(int X, int Y, int thX, int thY) {
//			boolean ret = false;
//			float boundXR = X + thX;
//			float boundXL = X;// - thX;
//			float boundYU = Y;// - thY;
//			float boundYD = Y + thY;
//			if(mouseX > boundXL && 
//					mouseX < boundXR && 
//					mouseY > boundYU &&
//					mouseY < boundYD){
//				ret = true;
//			}
//			return ret;
//		}
//
//	}
//
//
//
//
//
//
//
//
//	public class Feeder extends Thread{
//
//		private static final int NUMBER_TRENDS = 10;
//		private Twitter twitter;
//		private Colony colony;
//
//		public Feeder(Colony colony){
//			this.twitter = new Twitter();
//			this.colony = colony;
//		}
//
//		public void run() {
//			String[] queryFile = loadStrings("query.txt");
//			String query = queryFile[0];
//
//			String[] topics = new String[NUMBER_TRENDS + 1];
//			while(true){
//				try {
//					Trend[] trends = twitter.getCurrentTrends().getTrends();
//					SearchAndAddThread[] threads = new SearchAndAddThread[NUMBER_TRENDS + 1];
//					for (int i = 0; i < NUMBER_TRENDS; i++) {
//						String trend  = trends[i].getQuery();
//						topics[i+1] = trend;
//						threads[i+1] = new SearchAndAddThread("SAThread" + (i + 1), trend, colony, i+2);
//						threads[i+1].start();					
//					}
//					topics[0] = query;
//					threads[0] = new SearchAndAddThread("SAThread" + 0, query, colony, 1);
//					println(threads[0]);
//					threads[0].start();
//					colony.updateTopics(topics);			
//					sleep(75000);
//					for(int i = 0; i < threads.length; i++){
//						threads[i].interrupt();
//					}
//				} 
//				catch (InterruptedException e) {
//					e.printStackTrace();
//				} 
//				catch (TwitterException e) {
//					e.printStackTrace();
//				}
//			}
//		}
//	}
//
//
//
//
//
//
//	//Seek_Arrive
//	// Daniel Shiffman <http://www.shiffman.net>
//	// The "Boid" class
//	// Created 2 May 2005
//
//	/**
//	 * Class Boid created by Daniel Shiffman <http://www.shiffman.net>
//	 * 
//	 * Class Boid modified by Filipe Calegario <http://filipecalegario.com>
//	 * @author fcac
//	 */
//
//	
//
//
//
//
//
//
//
//
//
//	public class ParadeTimerThread extends Thread {
//
//		public boolean blockade = true;
//
//		public ParadeTimerThread(String name) {
//			super(name);
//		}
//
//		public void run() {
//			while(true){
//				try {
//					sleep(700);
//					this.blockade = true;
//					sleep(700);
//					this.blockade = false;
//				} 
//				catch (InterruptedException e) {
//					e.printStackTrace();
//				}
//				blockade = true;
//			}	
//		}
//	}
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//	// Path Following
//	// Daniel Shiffman <http://www.shiffman.net>
//	// The Nature of Code, Spring 2009
//
//	class Path {
//
//		private static final boolean DEBUG = false;
//		public static final float RADIUS = 8;
//
//		ArrayList points;
//		boolean first;
//		public Vector3D initialPoint;
//
//		public Path() {
//			points = new ArrayList();
//			first = true;
//		}
//
//		public void addPoint(float x, float y) {
//			Vector3D point = new Vector3D(x,y);
//			if(first){
//				initialPoint = point.copy();
//				first = false;
//			}
//			points.add(point);
//		}
//
//		// Draw the path
//		public void display() {
//			// Draw the radius as thick lines and circles
//			if (DEBUG) {
//				// Draw end points
//				for (int i = 0; i < points.size(); i++) {
//					Vector3D point = (Vector3D) points.get(i);
//					fill(175);
//					noStroke();
//					ellipse(point.x,point.y,RADIUS*2,RADIUS*2);
//				}
//
//				// Draw Polygon around path
//				for (int i = 0; i < points.size()-1; i++) {
//					Vector3D start = (Vector3D) points.get(i);
//					Vector3D end = (Vector3D) points.get(i+1);
//					Vector3D line = Vector3D.sub(end,start);
//					Vector3D normal = new Vector3D(line.y,-line.x);
//					normal.normalize();
//					normal.mult(RADIUS);
//
//					// Polygon has four vertices
//					Vector3D a = Vector3D.add(start, normal);
//					Vector3D b = Vector3D.add(end, normal);
//					Vector3D c = Vector3D.sub(end, normal);
//					Vector3D d = Vector3D.sub(start, normal);
//
//					fill(175);
//					noStroke();
//					beginShape();
//					vertex(a.x,a.y);
//					vertex(b.x,b.y);
//					vertex(c.x,c.y);
//					vertex(d.x,d.y);
//					endShape();
//				}
//
//				// Draw Regular Line
//				stroke(0);
//				noFill();
//				beginShape();
//				for (int i = 0; i < points.size(); i++) {
//					Vector3D loc = (Vector3D) points.get(i);
//					vertex(loc.x,loc.y);
//				}
//				endShape();
//			}
//
//		}
//
//		public void pointsOnPath() {
//			addPoint(63,520);
//			addPoint(74,119);
//			addPoint(84,59);
//			addPoint(145,34);
//			addPoint(256,29);
//			addPoint(332,29);
//			addPoint(377,64);
//			addPoint(390,118);
//			addPoint(394,205);
//			addPoint(398,420);
//			addPoint(399,493);
//			addPoint(388,540);
//			addPoint(336,559);
//			addPoint(232,565);
//			addPoint(125,565);
//			addPoint(78,541);
//			addPoint(66,519);
//			addPoint(65,517);
//		}
//	}
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//	public class PresenterThread extends Thread {
//
//		public Colony colony;
//		public final int WANDER_TIME = 180000;
//		public final int PARADE_TIME = 180000;
//		public final int SELECTION_TIME = 180000;
//		public final int HELP_TIME = 15000;
//		public final int DETAILS_TIME = 15000;
//
//		public PresenterThread(String name, Colony colony) {
//			super(name);
//			this.colony = colony;
//		}
//
//		public void run() {
//			try {
//				while(true){
//					//----------------------
//					colony.action = "wander";
//					sleep(WANDER_TIME);
//					//----------------------
//					colony.action = "paradeMode";
//					sleep(PARADE_TIME/2);
//					util.duplicateControl = new Vector();
//					colony.organisms.clear();
//					sleep(PARADE_TIME/2);
//					//----------------------
//					colony.action = "wander";
//					colony.drawS[2] = false;
//					colony.drawS[3] = false;
//					colony.drawS[4] = false;
//					colony.drawS[5] = false;
//					colony.drawS[6] = false;
//					colony.drawS[7] = false;
//					colony.drawS[8] = false;
//					colony.drawS[9] = false;
//					colony.drawS[10] = false;
//					colony.drawS[11] = false;
//					sleep(SELECTION_TIME);
//					colony.drawS[2] = true;
//					colony.drawS[3] = true;
//					colony.drawS[4] = true;
//					colony.drawS[5] = true;
//					colony.drawS[6] = true;
//					colony.drawS[7] = true;
//					colony.drawS[8] = true;
//					colony.drawS[9] = true;
//					colony.drawS[10] = true;
//					colony.drawS[11] = true;
//					//----------------------
//					util.duplicateControl = new Vector();
//					colony.organisms.clear();
//					//----------------------
//					colony.drawAbout = true;
//					sleep(HELP_TIME);
//					//----------------------
//					colony.drawAbout = false;
//					colony.drawDetails = true;        
//					sleep(DETAILS_TIME);
//					colony.drawDetails = false;
//					//----------------------
//					util.duplicateControl = new Vector();
//					colony.organisms.clear();
//				}	
//			}
//			catch (InterruptedException e) {
//				// TODO Auto-generated catch block
//				e.printStackTrace();
//			}
//		}
//
//	}
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//	public class SearchAndAddThread extends Thread {
//
//		private String query;
//		private Colony colony;
//		private int group;
//		private Twitter twitter;
//		private Vector previousTweets;
//
//		public SearchAndAddThread(String name, String query, Colony colony, int group) {
//			super(name);
//			this.query = query;
//			this.colony = colony;
//			this.group = group;
//			this.twitter = new Twitter();
//			this.previousTweets = new Vector();
//		}
//
//		public void run() {
//			QueryResult result;
//			try {
//				this.query = this.query.replaceAll("\"", "\\\"");
//				this.query = this.query.replaceAll("#", "%23");
//				result = twitter.search(new Query(this.query));
//				List tweets = result.getTweets();
//				//println(tweets.size());
//				for (int i = 0; i < tweets.size(); i++) {
//					Tweet tw = (Tweet)tweets.get(i);
//					String text = tw.getText();
//					if(this.getName().equals("SAThread0")){
//						text = "@" + tw.getFromUser() + " " + text;
//						println(text);
//					}
//					if(!util.duplicateControl.contains(text)){
//						util.duplicateControl.add(text);
//						Organism b = colony.addBoid(new Vector3D(0,0), util.getGroup(this.group));
//						b.text = text;
//					}
//					Thread.sleep(10000);        
//				}
//			} 
//			catch (TwitterException e1) {
//				println("teste");
//			} 
//			catch (InterruptedException e) {
//
//			}
//		}	
//	}
//
//
//
//
//
//
//
//
//
//
//
//
//
//	public class Util {
//
//		boolean isLoaded;
//
//		public Vector duplicateControl;
//
//		public Util() {
//			duplicateControl = new Vector();  
//			isLoaded = false;
//		}
//
//		private String format(int animation){
//			String imgFile = "";
//			if(animation < 10){
//				imgFile = "0" + animation + ".png";
//			} 
//			else {
//				imgFile = animation + ".png";
//			}
//			return imgFile;
//		}
//
//		public void preloadImages(HashMap hm){
//			for(int i = 1; i <= 11; i++){
//				for(int j = 1; j<= 4; j++ ){
//					String imgPath = "new_species/" + i + "-" + j + ".png";
//					//println(imgPath);
//					PImage img = loadImage(imgPath);
//					hm.put(i + "-" + j, img);
//				}
//				String imgPath = "new_species/ic" + i + ".png";
//				PImage img = loadImage(imgPath);
//				hm.put("ic" + i, img);
//			}
//			isLoaded = true;
//		}
//
//		public String randomGroup(){
//			String ret = "" + floor(random(1,11));
//			return ret;
//		}
//
//		public void drawVector(Vector3D vector, Vector3D location, float scayl) {
//			pushMatrix();
//			float arrowsize = 4;
//			// Translate to location to render vector
//			translate(location.x,location.y);
//			stroke(255);
//			// Call vector heading function to get direction (note that pointing up is a heading of 0) and rotate
//			rotate(vector.heading2D());
//			// Calculate length of vector & scale it to be bigger or smaller if necessary
//			float len = vector.magnitude()*scayl;
//			// Draw three lines to make an arrow (draw pointing up since we've rotate to the proper direction)
//			line(0,0,len,0);
//			line(len,0,len-arrowsize,+arrowsize/2);
//			line(len,0,len-arrowsize,-arrowsize/2);
//			popMatrix();
//		}
//
//		public String getGroup(int i) {
//			return "" + i;
//		}
//
//	}
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//	static public void main(String args[]) {
//		PApplet.main(new String[] { "Monera_ITupferl" });
//	}
//}
